C/C++

推荐列表 站点导航

当前位置:首页 > 脚本编程 > C/C++ >

C++_对比C语言中memccpy()函数和memcpy()函数的用法,C语言memccpy()函数:复制内存中

来源:网络整理  作者:  发布时间:2020-12-19 18:16
对比C语言中memccpy()函数和memcpy()函数的用法,C语言memccpy()函数:复制内存中的内容头文件:#include string.h定义函数:...

执行结果:

函数说明:memccpy()用来拷贝src 所指的内存内容前n 个字节到dest 所指的地址上。与memcpy()不同的是,memccpy()会在复制时检查参数c 是否出现,若是则返回dest 中值为c 的下一个字节地址。

返回值:返回指向dest 中值为c 的下一个字节指针。返回值为0 表示在src 所指内存前n 个字节中没有值为c的字节。

memcpy() 会复制 src 所指的内存内容的前 num 个字节到 dest 所指的内存地址上。

定义函数:

代码说明:

C语言memcpy()函数:复制内存内容(忽略\0)

memcpy() 并不关心被复制的数据类型,只是逐字节地进行复制,这给函数的使用带来了很大的灵活性,可以面向任何数据类型进行复制。


需要注意的是:

p2 = abcde p3 = abcde

与 strcpy() 不同的是,memcpy() 会完整的复制 num 个字节,不会因为遇到“\0”而结束。

2) 指针p3通过函数memcpy直接指向了指针p2所指向的内存,也就是说指针p2、p3指向了同一块内存。然后打印p2,p3指向的内存值,结果是相同的。

dest 和 src 所指的内存空间不能重叠(如果发生了重叠,使用 memmove() 会更加安全)。

dest 指针要分配足够的空间,也即大于等于 num 字节的空间。如果没有分配空间,会出现断错误。

#include <string.h> main(){ char a[] = "string[a]"; char b[] = "string(b)"; memccpy(a, b, 'B', sizeof(b)); printf("memccpy():%s\n", a); }

运行结果:

【返回值】返回指向 dest 的指针。注意返回的指针类型是 void,使用时一般要进行强制类型转换。

#include <stdio.h> #include <stdlib.h> #include <string.h> #define N (10) int main() { char* p1 = "abcde"; char* p2 = (char*)malloc(sizeof(char) * N); char* p3 = (char*)memcpy(p2, p1, N); printf("p2 = %s\np3 = %s\n", p2, p3); free(p2); p2 = NULL; p3 = NULL; system("pause"); return 0; }

#include <string.h>

#include <string.h>

头文件:

1) 代码首先定义p1,p2,p3三个指针,但略有不同,p1指向一个字符串字面值,给p2分配了10个字节的内存空间。

3) 最后按照好的习惯释放p2,并把p3也置为NULL是为了防止再次访问p3指向的内存,导致野指针的发生。

void * memcpy ( void * dest, const void * src, size_t num );

C语言memccpy()函数:复制内存中的内容

范例

头文件:

memccpy():string(b)

void * memccpy(void *dest, const void * src, int c, size_t n);

代码示例:

memcpy() 用来复制内存,其原型为:

相关热词: C++

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jiaob/cjj/5711.shtml

最新文章
只需要在调用Ctrl+B编译后 只需要在调用Ctrl+B编译后

时间:2021-01-13

OpenGL超级宝典visual studio OpenGL超级宝典visual studio

时间:2021-01-04

Directx11 教程(2) 基本的wi Directx11 教程(2) 基本的wi

时间:2021-01-04

LeetCode11ContainerWithMostWate LeetCode11ContainerWithMostWate

时间:2021-01-04

C语言简单IT之家速成 C语言简单IT之家速成

时间:2020-12-27

三分钟了解Activity工作流 三分钟了解Activity工作流

时间:2020-12-27

编译器是如何实现32位整型 编译器是如何实现32位整型

时间:2020-12-27

C++中lower_bound函数和upper C++中lower_bound函数和upper

时间:2020-12-27

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

C++_对比C语言中memccpy()函数和memcpy()函数的用法,C语言memccpy()函数:复制内存中

2020-12-19 编辑:

执行结果:

函数说明:memccpy()用来拷贝src 所指的内存内容前n 个字节到dest 所指的地址上。与memcpy()不同的是,memccpy()会在复制时检查参数c 是否出现,若是则返回dest 中值为c 的下一个字节地址。

返回值:返回指向dest 中值为c 的下一个字节指针。返回值为0 表示在src 所指内存前n 个字节中没有值为c的字节。

memcpy() 会复制 src 所指的内存内容的前 num 个字节到 dest 所指的内存地址上。

定义函数:

代码说明:

C语言memcpy()函数:复制内存内容(忽略\0)

memcpy() 并不关心被复制的数据类型,只是逐字节地进行复制,这给函数的使用带来了很大的灵活性,可以面向任何数据类型进行复制。


需要注意的是:

p2 = abcde p3 = abcde

与 strcpy() 不同的是,memcpy() 会完整的复制 num 个字节,不会因为遇到“\0”而结束。

2) 指针p3通过函数memcpy直接指向了指针p2所指向的内存,也就是说指针p2、p3指向了同一块内存。然后打印p2,p3指向的内存值,结果是相同的。

dest 和 src 所指的内存空间不能重叠(如果发生了重叠,使用 memmove() 会更加安全)。

dest 指针要分配足够的空间,也即大于等于 num 字节的空间。如果没有分配空间,会出现断错误。

#include <string.h> main(){ char a[] = "string[a]"; char b[] = "string(b)"; memccpy(a, b, 'B', sizeof(b)); printf("memccpy():%s\n", a); }

运行结果:

【返回值】返回指向 dest 的指针。注意返回的指针类型是 void,使用时一般要进行强制类型转换。

#include <stdio.h> #include <stdlib.h> #include <string.h> #define N (10) int main() { char* p1 = "abcde"; char* p2 = (char*)malloc(sizeof(char) * N); char* p3 = (char*)memcpy(p2, p1, N); printf("p2 = %s\np3 = %s\n", p2, p3); free(p2); p2 = NULL; p3 = NULL; system("pause"); return 0; }

#include <string.h>

#include <string.h>

头文件:

1) 代码首先定义p1,p2,p3三个指针,但略有不同,p1指向一个字符串字面值,给p2分配了10个字节的内存空间。

3) 最后按照好的习惯释放p2,并把p3也置为NULL是为了防止再次访问p3指向的内存,导致野指针的发生。

void * memcpy ( void * dest, const void * src, size_t num );

C语言memccpy()函数:复制内存中的内容

范例

头文件:

memccpy():string(b)

void * memccpy(void *dest, const void * src, int c, size_t n);

代码示例:

memcpy() 用来复制内存,其原型为:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jiaob/cjj/5711.shtml

相关文章

风云图片

推荐阅读

返回C/C++频道首页